home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / kcl / akcl / akcl1615.lha / h / coff_encap.h < prev    next >
Text File  |  1990-02-05  |  1KB  |  41 lines

  1. /* to be included by machine.h when the
  2.    gnu coff encapsulation scheme is used */
  3.  
  4. #define COFF_ENCAPSULATE
  5.  
  6. #define MEM_SAVE_LOCALS \
  7.   struct coffheader header1;\
  8.   struct coffscn *tp, *dp, *bp;\
  9.   struct exec header;\
  10.   int stsize
  11.  
  12. #define READ_HEADER \
  13.         fread(&header1, sizeof(header1), 1, original); \
  14.         tp = &header1.scns[0]; \
  15.         dp = &header1.scns[1]; \
  16.         bp = &header1.scns[2]; \
  17.         fread(&header, sizeof(header), 1, original); \
  18.         data_begin=DATA_BEGIN; \
  19.         data_end = core_end; \
  20.         original_data = header.a_data; \
  21.         header.a_data = data_end - data_begin; \
  22.         header.a_bss = 0; \
  23.         dp->s_size = header.a_data;      \
  24.         bp->s_paddr = dp->s_vaddr + dp->s_size; \
  25.         bp->s_vaddr = bp->s_paddr;       \
  26.         bp->s_size = 0;                  \
  27.         header1.tsize = tp->s_size;   \
  28.         header1.dsize = dp->s_size;   \
  29.         header1.bsize = bp->s_size;   \
  30.         fwrite(&header1, sizeof(header1), 1, save); \
  31.         fwrite(&header, sizeof(header), 1, save);
  32.  
  33. #define FILECPY_HEADER \
  34.         filecpy(save, original, header.a_text);
  35.  
  36. #define  COPY_TO_SAVE \
  37.   filecpy(save, original, header.a_syms+header.a_trsize+header.a_drsize); \
  38.   fread(&stsize, sizeof(stsize), 1, original); \
  39.   fwrite(&stsize, sizeof(stsize), 1, save); \
  40.   filecpy(save, original, stsize - sizeof(stsize))
  41.